/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package model.negocio;

import java.security.MessageDigest;
import java.util.ArrayList;
import java.util.List;
import java.util.logging.Level;
import java.util.logging.Logger;
import model.beans.Usuario;
import model.dao.UsuarioDAO;
import sun.misc.BASE64Encoder;

/**
 *
 * @author Carol
 */
public class UsuarioNegocio{    
    public boolean salvar(Usuario usuario){
        try{
            UsuarioDAO dao = new UsuarioDAO();
            String senha = usuario.getSenha();
            senha = criptografarSenha(senha);
            usuario.setSenha(senha);
            dao.inserir(usuario);
            return true;
        }catch(Exception ex){
            return false;
        }
    }
    
    public List<Usuario> listar(){
        try{
            UsuarioDAO dao = new UsuarioDAO();
            List<Usuario> lista = dao.listar();
            return lista;
        }catch(Exception ex){
            return null;
        }
    }
    
    public Usuario buscar(int id){
        try{
            UsuarioDAO dao = new UsuarioDAO();
            Usuario usuario = dao.buscar(id);
            return usuario;
        }catch(Exception ex){
            return null;
        }
    }
    
    public boolean deletar(int id){
        try{
            UsuarioDAO dao = new UsuarioDAO();
            dao.deletar(id);
            return true;
        }catch(Exception ex){
            return false;
        }
    }
    
    public boolean alterar(Usuario usuario){
        try{
            UsuarioDAO dao = new UsuarioDAO();
            dao.alterar(usuario);
            return true;
        }catch(Exception ex){
            return false;
        }
    }
    
    public List<Object> validaDados(Usuario usuario){
        List<Object> lista = new ArrayList<Object>();
        try{
            UsuarioDAO dao = new UsuarioDAO();
            List<Usuario> listaUsuario = dao.listar();
            for(Usuario u : listaUsuario){
                if(u.getEmail().equals(usuario.getEmail())){
                    lista.add(false);
                    lista.add("Já existe um usuário com o mesmo email cadastrado no sistema!");
                    return lista;
                }
            }
            lista.add(true);
            return lista;
        }catch(Exception ex){ 
            lista.add(false);
            lista.add("Ocorreu algum erro no sistema! Tente Novamente!");
            return lista;
        }
    }
    
    public Usuario validaLogin(String login, String senha){
        UsuarioDAO dao;
        Usuario usuario = new Usuario();
        try {
            dao = new UsuarioDAO();
            senha = criptografarSenha(senha);
            usuario = dao.validaLogin(login, senha);
        } catch (Exception ex) {
            Logger.getLogger(UsuarioNegocio.class.getName()).log(Level.SEVERE, null, ex);
        }
        return usuario;
    
    }
    
        public String criptografarSenha(String senha){  
        try{ 
         
         MessageDigest digest = MessageDigest.getInstance("MD5");  
                       digest.update(senha.getBytes());  
         BASE64Encoder encoder = new BASE64Encoder();  
                return encoder.encode(digest.digest());  
        }catch(Exception ex){  
            ex.printStackTrace();  
        }  
        return senha;  
    } 
}
